package com.hsh.erp.domain.dto;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;

/**
 * outbound
 */
@Data
@Accessors(chain = true)
public class OutboundDTO implements Serializable {
    /**
     *
     */
    private Integer id;

    /**
     * 出库类型id
     */
    private Integer typeId;

    /**
     * 出库类型名称
     */
    private String typeName;

    /**
     * 出库编号（如果与订单绑定，出库编号=订单号）
     */
    private String no;

    /**
     * 0-未完成 1 -已完成 （同一个出入库编号的所有订单，所有商品的预计入库数量=所有订单的所有实际入库数量，才可以设置为已完成）
     */
    private Integer isFinish;

    /**
     * 商品id
     */
    private Integer productId;

    /**
     * 商品名称
     */
    private String productName;

    /**
     * 预计出库数量
     */
    private Integer planNum;

    /**
     * 实际出库数量（库存不足时，实际出库会<预计出库，需要手动补充）
     */
    private Integer actualNum;

    /**
     * 销售价格：分
     */
    private Integer priceCent;

    /**
     * 销售价格：元
     */
    private BigDecimal priceYuan;

    /**
     * 店铺id
     */
    private Integer shopId;

    /**
     * 店铺名称
     */
    private String shopName;

    /**
     * 仓库id
     */
    private Integer repositoryId;

    /**
     * 仓库名称
     */
    private String repositoryName;

    /**
     * 出入库时间
     */
    private LocalDateTime createTime;

    /**
     * 备注
     */
    private String note;

    /**
     * 是否删除 0-未删除 1-已删除
     */
    private Integer isDelete;


    /**
     * 返回给前端时，数据初始化
     * @return
     */
    public OutboundDTO init() {
        this.priceCent = this.priceCent == null ? 0 : this.priceCent;
        this.priceYuan = new BigDecimal(this.priceCent).divide(new BigDecimal(100),2, RoundingMode.UP);
        return this;
    }
}